package org.jeecg.modules.zhouAdmin.admin.goodsCenter.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.zhouAdmin.admin.goodsCenter.pojo.*;

import java.util.List;

public interface IGoodsCenterService {

    /**
     * 获取商品类型列表
     *
     * @param page 分页
     * @param code 编号
     */
    IPage<MlccThirdGoodsType> listGoodsTypes(Page<MlccThirdGoodsType> page, String code);

    /**
     * 新增商品类型
     *
     * @param goodsType 商品类型对象
     */
    int addGoodType(MlccThirdGoodsType goodsType);

    /**
     * 编辑商品类型
     *
     * @param goodsType 商品类型对象
     */
    int updateGoodType(MlccThirdGoodsType goodsType);

    /**
     * 删除商品类型
     *
     * @param id 商品类型id
     */
    int delGoodType(String id);

    /**
     * 商品系列列表
     *
     * @param page
     * @param typeid 商品类型id
     * @param name   系列名称
     * @param status 状态
     */
    IPage<MlccThirdGoodsSeries> listGoodsGroup(Page<MlccThirdGoodsSeries> page, String typeid, String name, Integer status);

    /**
     * 新增商品系列
     *
     * @param entity 商品系列对象
     */
    int addGoodGroup(MlccThirdGoodsSeries entity);

    /**
     * 编辑商品系列
     *
     * @param entity 商品系列对象
     */
    int updateGoodGroup(MlccThirdGoodsSeries entity);

    /**
     * 下架商品系列
     *
     * @param id 商品系列id
     */
    int offGoodGroup(String id);

    /**
     * 上架商品系列
     *
     * @param id 商品系列id
     */
    int upGoodGroup(String id);

    /**
     * 删除商品系列
     *
     * @param id 商品系列id
     */
    int delGoodGroup(String id);

    /**
     * 获取商品系列的阶梯售价
     *
     * @param groupid 商品系列ID
     */
    List<MlccThirdGoodsRange> listGroupPrice(String groupid);

    /**
     * 添加阶梯售价
     *
     * @param entity 参数对象
     */
    int saveGroupPrice(MlccThirdGoodsRange entity);

    /**
     * 删除商品系列阶梯价
     *
     * @param id 阶梯价主键id
     */
    int deleteGroupPrice(String id);

    /**
     * 获取商品类型的下拉列表
     */
    List<MlccThirdGoodsType> laGoodsType();

    /**
     * 获取商品列表
     *
     * @param page
     * @param code    商品编号
     * @param gyscode 供应商编号
     * @param status  状态
     */
    IPage<MlccThirdGoods> listGoods(Page<MlccThirdGoods> page, String code, String gyscode, Integer status, String groupID);

    /**
     * 下架商品
     *
     * @param id 商品id
     */
    int offGoods(String id);

    /**
     * 上架商品
     *
     * @param id 商品id
     */
    int upGoods(String id);

    /**
     * 删除商品
     *
     * @param id 商品id
     */
    int delGoods(String id);

    /**
     * 获取商品册列表
     *
     * @param page  分页器
     * @param name  客户名称
     * @param phone 联系电话
     */
    IPage<MlccThirdGoodsBooklet> listBooklets(Page<MlccThirdGoodsBooklet> page, String name, String phone);

    /**
     * 新增商品册
     *
     * @param booklet 商品册对象
     */
    int saveBooklet(MlccThirdGoodsBooklet booklet);

    /**
     * 更新商品册
     *
     * @param booklet 商品册对象
     */
    int updateBooklet(MlccThirdGoodsBooklet booklet);

    /**
     * 获取主推面料列表
     *
     * @param page    分页
     * @param code    商品编号
     * @param gysCode 供应商编号
     * @param status  状态
     */
    IPage<MlccThirdGoods> getFirstGoodsList(Page<MlccThirdGoods> page, String code, String gysCode, String status);

    /**
     * 新增主推商品
     *
     * @param code   商品编号
     * @param price  添加的价格
     * @param remark 备注
     */
    int addFirstGoods(String code, double price, String remark);

    /**
     * 商品册发放情况
     *
     * @param bookletid 商品册id
     * @param page      分页器
     */
    IPage<MlccThirdGoodsBookletFa> listFafang(String bookletid, Page<MlccThirdGoodsBookletFa> page);

    /**
     * 商品册详情
     *
     * @param id 商品册id
     */
    MlccThirdGoodsBooklet bookletDetail(String id);

    /**
     * 发放商品册
     *
     * @param bookletid  商品册id
     * @param remark     备注
     * @param num        发放数量
     * @param companyids 公司id
     */
    int addFa(String bookletid, String remark, Integer num, String[] companyids);

    /**
     * 删除发放记录
     *
     * @param id 发放id
     */
    int deleteFa(String id);

    /**
     * 获取商品册下的商品列表
     *
     * @param page      分页器
     * @param bookletid 商品册id
     */
    IPage<MlccThirdGoods> listFabricFromBooklet(Page<MlccThirdGoods> page, String bookletid);

    /**
     * 删除商品册下的商品（删除关联信息）
     *
     * @param id 关联表id
     */
    int delFabricFrombook(String id);

    /**
     * 商品类型详情
     *
     * @param id 商品类型id
     */
    MlccThirdGoodsType typeDetail(Integer id);

    /**
     * 新增商品类型参数
     *
     * @param param 参数对象
     * @param type  商品类型id
     */
    int saveTypeParam(MlccThirdGoodstypeParameter param, String type);

    /**
     * 获取类型下的参数列表
     *
     * @param type 商品类型id
     */
    List<MlccThirdGoodstypeParameter> listTypeParam(String type);

    /**
     * 更新商品类型参数
     *
     * @param param 参数数组
     */
    int updateTypeParam(MlccThirdGoodstypeParameter param);

    /**
     * 删除商品类型参数
     *
     * @param id 参数id
     */
    int delTypeParam(String id);

    /**
     * 根据商品系例获取配置的参数
     *
     * @param groupid 商品系列id
     */
    List<MlccThirdGoodstypeParameter> paramlist(String groupid);

    /**
     * 根据商品系列获取商品类型
     *
     * @param group 商品系列id
     */
    MlccThirdGoodsType goodsTypeByGroup(String group);

    /**
     * 进入新增商品界面，创建一条未启用的商品
     *
     * @param group 商品系列id
     */
    String createGoods(String group);

    /**
     * 给商品设置参数
     *
     * @param parameterId 参数id
     * @param paramvalue  参数值
     * @param goodsid     商品id
     */
    int saveGoodsParam(String parameterId, String paramvalue, String goodsid);

    /**
     * 保存商品返修项
     *
     * @param fanxiu 返修项
     */
    int saveFanxiu(MlccThirdGoodsFanxiu fanxiu);

    /**
     * 获取商品已设置的返修参数
     *
     * @param goodsid 商品id
     */
    List<MlccThirdGoodsFanxiu> listFanxiu(String goodsid);

    /**
     * 删除返修参数
     *
     * @param id 返修id
     */
    int delFanxiu(String id);

    /**
     * 商品规格批量导入
     *
     * @param list    excel中的数据
     * @param goodsid 商品ID
     */
    int importExcel(List<MlccThirdGoodsSpecifications> list, String goodsid);

    /**
     * 获取商品规格模板
     */
    List<MlccThirdGoodsSpecifications> exportGuige();

    /**
     * 查询已经设置的商品规格
     *
     * @param goodsid 商品id
     */
    List<MlccThirdGoodsSpecifications> listGuige(String goodsid);

    /**
     * 删除已经设置的商品规格
     *
     * @param id 规格id
     */
    int delGuige(String id);

    /**
     * 商品尺码批量导入
     *
     * @param list    excel中的数据
     * @param goodsid 商品ID
     */
    int importSizeExcel(List<MlccThirdGoodsSize> list, String goodsid);

    /**
     * 获取商品尺码模板
     */
    List<MlccThirdGoodsSize> exportSize();

    /**
     * 查询已经设置的商品尺码
     *
     * @param goodsid 商品id
     */
    List<MlccThirdGoodsSize> listSize(String goodsid);

    /**
     * 删除已经设置的商品尺码
     *
     * @param id 尺码id
     */
    int delSize(String id);

    /**
     * 更新商品
     *
     * @param goods 商品对象
     */
    int updateGoods(MlccThirdGoods goods);

    /**
     * 获取商品详情
     *
     * @param id 商品id
     */
    MlccThirdGoods goodsDetail(String id);

    /**
     * 获取商品配置的参数
     *
     * @param id 商品id
     */
    List<MlccThirdGoodsandparameter> goodsParam(String id);

    /**
     * 编辑商品参数
     *
     * @param param 参数对象
     */
    int updateGoodsParam(MlccThirdGoodsandparameter param);

    /**
     * 获取商品列表（导出）
     *
     * @param code    商品编号
     * @param gyscode 供应商编号
     * @param status  状态
     */
    List<MlccThirdGoods> exportGoods(String code, String gyscode, Integer status, String groupID);

    /**
     * 商品批量导入
     *
     * @param list  excel中的数据
     * @param group 商品系列ID
     */
    int importGoods(List<MlccThirdGoods> list, String group);

    /**
     * 获取商品参数模板（导出）
     *
     * @param groupID 系列id
     */
    List<GoodsParamExcel> exportGoodsParam(String groupID);

    /**
     * 商品参数导入
     *
     * @param list excel中的数据
     */
    int importGoodsParam(List<GoodsParamExcel> list);

    /**
     * 商品册导入商品(把已有的商品加入商品册)
     *
     * @param list 上传的Excel文件数据
     */
    int importGoodstoBooklet(List<MlccThirdGoods> list, String bookletid);
}
